package inc.sneid.reminderSpring.domains;

import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor
@Entity
@Table(name = "records")
@Getter
@Setter
public class Record {

    public Record(String name, String description, Deltas deltas) {
        this.name = name;
        this.description = description;
        this.interval = new Interval(deltas);
    }

    @Id
    @GeneratedValue
    private Long id;
    /**
     * Имя записи. Не может быть пустым или равняться нулю.
     */
    @Column(nullable = false)
    @NotBlank
    private String name;
    /**
     * Описание записи. Если пустое, то равняется нулю.
     */
    private String description;
    /**
     * Массив интервалов. К последней дате(nextDate) прибавляется элемент массива intervals под индексом counter, а затем
     * counter увеличивается на 1. Когда counter станет больше либо равен длине массива intervals, то задачу следует
     * пометить как выполненную.
     */
    @Embedded
    private Interval interval;
}
